#ifndef TOWER_OWNED_STATES_H
#define TOWER_OWNED_STATES_H
////////////////////////////////////////////////////////////////////////////////
//
//	Name:	TowerOwnedStates.h
//
//	Desc:	Declare all the states that can be assigned to the Immortal Class
//
////////////////////////////////////////////////////////////////////////////////

#include "State.h"

class Tower;

class TowerGlobalState : public State<Tower>
{
private:

	TowerGlobalState(){}
	TowerGlobalState(const TowerGlobalState&);
	TowerGlobalState operator=(const TowerGlobalState&);
public:
	static TowerGlobalState* Instance();
	virtual void Enter(Tower* tower){}
	virtual void Execute(Tower* tower);
	virtual void Exit(Tower* tower){}
	//virtual bool OnMessage(Immortal* immortal, const Telegram& msg);
};

////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
class Standard : public State<Tower>
{
private:

	Standard(){}
	
	Standard(const Standard&);
	Standard& operator=(const Standard&);

public:

	//this is a singleton
	static Standard* Instance();

	virtual void Enter(Tower* tower);

	virtual void Execute(Tower* tower);

	virtual void Exit(Tower* tower);

	//virtual bool OnMessage(Attack* immortal, const Telegram& msg);
};

#endif
